﻿using System;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DevExpress.XtraGrid.Views.Grid;
using LayerEntity.Producto;
using LayerLogic;
using LayerLogic.Producto;

namespace System2012.Almacen
{
    public partial class frmSubGrupo : DevExpress.XtraEditors.XtraForm
    {
        /// <summary>
        /// intProcesoActivo proceso que se esta ejecuntado dentro del Hilo de backgroud
        /// </summary>
        int intProcesoActivo = 0;
        /// <summary>
        /// Indica si estamos editanado o creando uno Nuevo
        /// 0: Nuevo Documento
        /// 1: Editando y Guardando
        /// </summary>
        ///  /// <summary>
        /// metodos y funciones globales de ayuda del sistema
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        GUtil util = new GUtil();
        /// <summary>
        /// 
        /// </summary>
        DataTable dtbFamilia;
        int operacion = 0;
        public frmSubGrupo()
        {
            this.InitializeComponent();
        }

        private void NuevaFamilia()
        {
            this.util.RecControles(this);
            this.operacion = 0;
        }

        private void Grabar()
        {
            EFamilia familia = new EFamilia();
            familia.idfamilia = this.txtId.Text;
            familia.Nombre = this.txtNombre.EditValue.ToString();
            familia.Id_Grupo = this.CmbGrupo.EditValue.ToString();
            familia.Id_Estado = int.Parse(this.CbListEstado.EditValue.ToString());
            familia.IdUsuario = "";
            string resultado = System2012.SystemUtils.RecodManajerproducto.MantenimientoFamilias(familia, this.operacion == 0 ? EnumOperaciones.Insertar : EnumOperaciones.Actualizar);
            if (resultado == "0")
            {
                XtraMessageBox.Show(this, "PROCESO EFECTUADO CON EXITO", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.None);
            }
            else
            {
                if (resultado == "-1")
                {
                    XtraMessageBox.Show(this, "INCONSISTENCIA INESPERADA \n NO SE REALIZO NINGUNA OPERACIÓN", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    if (resultado == "-2")
                    {
                        XtraMessageBox.Show(this, "EL NOMBRE DEL LA FAMILIA INGRESADO YA EXISTE", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                    {
                        if (resultado == "-2")
                        {
                            XtraMessageBox.Show(this, "INCONSISTENCIA INESPERADA \n NO SE REALIZO NINGUNA CTUALIZACION", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        else
                        {
                            if (resultado == "-4")
                            {
                                XtraMessageBox.Show(this, "NO HA SELECCIONADO NINGUN REGISTRO\n PARA REALIAR ESTE\n PROCESO INTENTE NUEVAMENTE", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            }
                        }
                    }
                }
            }
            if (!this.BGWFamilias.IsBusy)
            {
                this.BGWFamilias.RunWorkerAsync();
            }
        }

        private void Editar(int index)
        {
            this.txtId.Text = this.dtbFamilia.Rows[index]["idfamilia"].ToString();
            this.txtNombre.Text = this.dtbFamilia.Rows[index]["familia"].ToString();
            this.CmbGrupo.EditValue = this.dtbFamilia.Rows[index]["idgrupo"].ToString();
            this.CbListEstado.EditValue = int.Parse(this.dtbFamilia.Rows[index]["id_estado"].ToString());
            this.operacion = 1;
        }

        private bool Validar()
        {
            bool res = false;
            if (this.txtNombre.Text.Trim() == string.Empty)
            {
                res = false;
                XtraMessageBox.Show(this, "DEBE DE INGRESAR EL NOMBRE DE LA FAMILIA", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                if (this.CmbGrupo.ItemIndex == -1)
                {
                    res = false;
                    XtraMessageBox.Show(this, "SELECCIONE EL GRUPO A LA QUE PERTNECE FAMILIA", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    if (this.CbListEstado.ItemIndex == -1)
                    {
                        res = false;
                        XtraMessageBox.Show(this, "NO HA SELECCIONADO NINGUN ESTADO", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                    {
                        res = true;
                    }
                }
            }
            return res;
        }

        private void frmSubGrupo_Load(object sender, EventArgs e)
        {
            if (!this.BGWEstados.IsBusy)
            {
                this.BGWEstados.RunWorkerAsync();
            }
        }

        private void barManager1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if ((string)e.Item.Tag == "Nuevo")
            {
                this.NuevaFamilia();
            }
            if ((string)e.Item.Tag == "Grabar")
            {
                if (this.Validar())
                {
                    this.Grabar();
                }
            }
        }

        private void BGWEstados_DoWork(object sender, DoWorkEventArgs e)
        {
            this.BGWEstados.ReportProgress(30, "Cargando Estado");
            e.Result = SystemUtils.RecordManagerCommonList.GetEstados();
            this.BGWEstados.ReportProgress(100, "Completado");
        }

        private void BGWGrupo_DoWork(object sender, DoWorkEventArgs e)
        {
            this.BGWGrupo.ReportProgress(30, "Cargando Grupos");
            EGrupo obj = new EGrupo();
            LProducto Lpro = new LProducto();
            obj.Nombre = "";
            e.Result = SystemUtils.RecodManajerproducto.GetListaGrupo(obj);
            this.BGWGrupo.ReportProgress(100, "Completado");
        }

        private void BGWFamilias_DoWork(object sender, DoWorkEventArgs e)
        {
            this.BGWFamilias.ReportProgress(30, "Cargando Familias");
            EFamilia obj = new EFamilia();
            obj.Nombre = string.Format("where familia ilike '%{0}%'", this.txtFiltroFamilia.Text);
            e.Result = SystemUtils.RecodManajerproducto.GetListaFamilia(obj);
            this.BGWFamilias.ReportProgress(100, "Completado");
        }

        private void BGWEstados_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            this.CbListEstado.Properties.DataSource = e.Result;
            if (!this.BGWGrupo.IsBusy)
            {
                this.BGWGrupo.RunWorkerAsync();
            }
        }

        private void BGWGrupo_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            this.CmbGrupo.Properties.DataSource = e.Result;
            if (!this.BGWFamilias.IsBusy)
            {
                this.BGWFamilias.RunWorkerAsync();
            }
        }

        private void BGWFamilias_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            this.dtbFamilia = new DataTable();
            this.dtbFamilia = (DataTable)e.Result;
            this.gridControl1.DataSource = this.dtbFamilia;// System2012.SystemUtils.MantenanceHabitacion.getHabitaciones();
            this.gridControl1.RefreshDataSource();
            this.txtFiltroFamilia.Properties.NullValuePrompt = "INGRESE EL NOMBRE DE LA FAMILIA";
            this.txtFiltroFamilia.Properties.NullValuePromptShowForEmptyValue = true;
        }

        private void gridView1_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
        {
            this.Editar(e.RowHandle);
        }

        private void textEdit3_EditValueChanged(object sender, EventArgs e)
        {
        }

        private void textEdit3_TextChanged(object sender, EventArgs e)
        {
            if (!this.BGWFamilias.IsBusy)
            {
                this.BGWFamilias.RunWorkerAsync();
            }
        }

        private void gridView1_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)
        {
            if (e.RowHandle >= 0)
            {
                GridView view = sender as GridView;
                if (view.GetRowCellValue(e.RowHandle, view.Columns["des_estado"]).ToString() == "ELIMINADO")
                {
                    e.Appearance.BackColor = Color.Red;
                    e.Appearance.ForeColor = Color.Snow;
                }
                else
                {
                    if (view.GetRowCellValue(e.RowHandle, view.Columns["des_estado"]).ToString() == "INACTIVO")
                    {
                        e.Appearance.BackColor = Color.FromArgb(0xFF, 0xFF, 0x99);
                        e.Appearance.ForeColor = Color.Black;
                    }
                }
            }
        }
    }
}